#include <iostream>
using std::cout;
using std::endl;

class Point
{
public:
    Point(double x,double y)
        : _x(x)
          , _y(y)
    {}

    //定义一个成员函数模板
    //将_x转换成目标类型
    template <class T = int>
        T convert(){
            return (T)_x;
        }

    template <class T>
        T add(T t1);
private:
    double _x;
    double _y;
};

    template <class T>
        T Point::add(T t1){
            return _x + _y + t1;
        }

void test0(){
    Point pt(1.1,2.2);
    //使用了模板的类型参数的默认值
    cout << pt.convert() << endl;
    //指定方式
    cout << pt.convert<int>() << endl;
    //推导方式
    cout << pt.add(3.2) << endl;

}

int main(void){
    test0();
    return 0;
}
